/** * llmindex.io — model profile: per-domain scores, sub-metrics, run history * Author: Simon-Pierre Boucher * Contact: contact@spboucher.ai * License: Proprietary — © Simon-Pierre Boucher, all rights reserved */ import Link from 'next/link'; import { notFound } from 'next/navigation'; import { DemoBanner, ScoreBar, ScoreValue, formatMs, formatUsd } from '@llmindex/ui'; import { ProviderLogo } from '@/components/ProviderLogo'; import { getModelDuels, getModelProfile, getModelResponses } from '@/lib/data'; export const revalidate = 3600; export const dynamicParams = true; export function generateStaticParams(): Array<{ slug: string[] }> { return []; } export default async function ModelPage({ params }: { params: { slug: string[] } }) { const slug = params.slug.map(decodeURIComponent).join('/'); const profile = await getModelProfile(slug); if (!profile) notFound(); const [responses, duels] = await Promise.all([getModelResponses(slug), getModelDuels(slug)]); const responseDomains = Object.keys(responses).sort(); return (
← Leaderboard

{profile.name}

{profile.slug} · {profile.provider} · context{' '} {profile.contextLength?.toLocaleString() ?? '—'} · in{' '} {formatUsd(profile.promptPricePerM)}/1M · out {formatUsd(profile.completionPricePerM)}/1M

{profile.run.kind === 'demo_seed' && } {profile.global && (

Global Index

{profile.global.score}

95% CI [{profile.global.scoreLow}–{profile.global.scoreHigh}] · index v {profile.run.indexVersion}

)}

Per-domain scores

{profile.domains.map((d) => ( ))}
Domain Score (95% CI) Accuracy (IRT) Consistency Calibration Contam. Δ p50 $/1k
{d.domain.replaceAll('_', ' ')} {d.subMetrics?.accuracy_irt?.toFixed(3) ?? '—'} {d.subMetrics?.consistency?.toFixed(2) ?? '—'} {d.subMetrics?.calibration?.toFixed(2) ?? '—'} {d.subMetrics?.contamination_delta?.toFixed(3) ?? '—'} {formatMs(d.subMetrics?.latency_p50)} {formatUsd(d.subMetrics?.cost_per_1k_items)}
{responseDomains.length > 0 && (

Every answer, every test

Full transparency: the model's latest graded answer on every instantiated item of the current index version. Answer keys never leave the server; anchor-item prompts are withheld to protect the longitudinal subset.

{responseDomains.map((domain) => { const rows = responses[domain]!; const nCorrect = rows.filter((r) => r.correct === true).length; return (
{domain.replaceAll('_', ' ')}{' '} {nCorrect}/{rows.length} correct
{rows.map((r, i) => (
{r.correct === true ? 'correct' : r.correct === false ? 'wrong' : r.error ?? 'unscored'} {r.templateId} {r.isAnchor && anchor} conf {r.confidence != null ? Math.round(r.confidence * 100) + '%' : '—'} ·{' '} {formatMs(r.latencyMs)} · {formatUsd(r.costUsd)} · {r.tokensOut ?? '—'} tok
{r.prompt && (
question
                            {r.prompt}
                          
)}
model answer: {r.answer ?? '(none extracted)'}
))}
); })}
)} {duels.length > 0 && (

Judge-rated duels

Pairwise duels (writing, safety, SVG logo design) rated by a cross-provider judge panel with recorded position swaps.

{duels.map((d, i) => (
{d.outcome} {d.domain.replaceAll('_', ' ')} vs {d.opponent} · judge {d.judge} {d.positionSwapped && (positions swapped)}
task: {d.prompt.slice(0, 400)}
{d.myResponseExcerpt && (
                      {d.myResponseExcerpt}
                    
)}
))}
)}

Run history

    {profile.runHistory.map((h) => (
  • {new Date(h.createdAt).toISOString().slice(0, 10)} v{h.indexVersion} {h.kind} {h.score ?? '—'}
  • ))}
); }